òɾۿûѧϰʹá
ԭַhttps://www.joinquant.com/post/11948

ԭһ˵ʽ鵽ԭĺ߽ۡ


ԭĲԴ£

# 뺯
import jqdata
import math 
import pandas as pd
from six import StringIO


#log.set_level('order', 'error')

# ʼ趨ҪĹƱ׼ȵ
def initialize(context):
    # һȫֱ, ҪĹƱ
    # 000001(Ʊ:ƽ)
    # 趨300Ϊ׼
    set_benchmark('000300.XSHG')
    # ̬Ȩģʽ(ʵ۸)
    set_option('use_real_price', True)
    
   # run_monthly(handle, 1,'before_open')
    run_daily(handle)
    
    set_order_cost(OrderCost(open_tax=0, close_tax=0, open_commission=0.0003, close_commission=0.0013, close_today_commission=0, min_commission=0), type='stock')
    set_slippage(FixedSlippage(0.02))   

# ÿλʱ(ز,ÿһ,,ÿӵһ)һ
def handle(context):

    g.buylist = check_stock(context) 
    for  stock in context.portfolio.positions:
        if stock not in g.buylist:
            order_target_value(stock, 0)
            
    value = context.portfolio.total_value/len(g.buylist)
    print context.portfolio.available_cash
    for stock in g.buylist:
        
        order_target_value(stock, value )

def check_stock(context):
    date = context.current_dt.strftime('%Y-%m-%d')
    df = read_file('new1.csv')
    data = pd.read_csv(StringIO(df))
    try:
        buylist = list(data.loc[:,date])
        g.buylist = buylist
        print g.buylist
        return g.buylist
    except:
        return g.buylist
